#ifndef MASKTOOLS_HPP
#define MASKTOOLS_HPP

//------------------------------------------------------------------------------
// Fichier d'entête utilisés
//------------------------------------------------------------------------------
#include "Mask.hpp"
#include <string>

namespace ImageAnalysis
{
//----------------------------------------------------------------------
// Cette classe propose uniqument des méthodes statiques
// pour créer différents types de masques de convolution.
//----------------------------------------------------------------------
class MaskTools
{
public:

        //----------------------------------------------------------------------
        // Cette méthode permet de créer les masques de Prewitt
	// suivant les directions 0 et 6
        //----------------------------------------------------------------------
        static Mask** BuildPrewittMasks();
		//----------------------------------------------------------------------
        // Cette méthode permet de créer les masques de Roberts
	// suivant les directions 0 et 6
        //----------------------------------------------------------------------
	static Mask** BuildRobertsMasks();
	//----------------------------------------------------------------------
        // Cette méthode permet de créer lun masque 5 sur 5
		// suivant la direction 6
        //----------------------------------------------------------------------
        static Mask** Build55Mask();
	
	//----------------------------------------------------------------------
        // Cette méthode permet de créer les masques de Sobel
	// suivant les directions 6, 0 et 1
        //----------------------------------------------------------------------
	static Mask** BuildSobelMask();

	//----------------------------------------------------------------------
        // Cette méthode permet charger un mask depuis un fichier
        //----------------------------------------------------------------------
	static Mask** LoadMask( std::string& filename, int& numberOfMask );

        //----------------------------------------------------------------------
        //
        //----------------------------------------------------------------------
        virtual ~MaskTools();
private:
        //----------------------------------------------------------------------
        // Constructeur par copie et oprérateur d'affectation en privée pour
        // interdire leur utilisation
        //----------------------------------------------------------------------
        MaskTools();
        MaskTools( const MaskTools& copy);
        MaskTools& operator=( const MaskTools& copy );
};

}
#endif //MASKTOOLS_HPP
